module top(    //顶层模块：将各个模块组合
//外部接口
  input         clk,   //系统时钟50MHz 
  input         rst_n, //低电平复位
  input   [3:0] key,   //四个按键组成的按键信号，低电平有效
  
  output     	 da_data,//DA串行接口数据
  output    	 da_clk, //DA串行接口时钟     
  output        da_ldac,//DA更新信号
  output		 da_load, //DA串行接口加载控制信号
  output  [7:0] seg,   //数码管段选
  output  [2:0] sel   //数码管位选
);
	//内部信号：模块内部的接口信号，比如模块TLC_DA的输出信号data_in，通过内部信号r_data与模块key_test的输入信号wr_data相连
	wire [10:0] wr_data;
	wire [19:0] out_data;  //输入给数码管的数据

	//模块例化
	TLC_DA TLC_DA_inst(         //输入数字量转换为模拟量模块
		.clk(clk),
		.rst_n(rst_n),
		.da_clk(da_clk),              
		.da_data(da_data),
		.da_ldac(da_ldac),
		.da_load(da_load),
		.data_in(wr_data)
	);

	key_test key_test_inst(    //按键控制模块
		.clk(clk),
		.rst_n(rst_n),
		.key(key),
		.wr_data(wr_data),
		.out_data(out_data)
	);
		
	seg_num seg_num_inst(			//数码管显示模块
		.clk(clk),
		.rst_n(rst_n),
		.data_in(out_data),
		.seg(seg),
		.sel(sel)
	);
		
endmodule 